@Ineverleft
2年前 提问
1个回答

CSRF漏洞的基本防护措施有哪些

安全侠
2年前

CSRF漏洞的基本防护措施有以下这些:

  • 避免在URL中明文显示:特定操作的参数内容在URL中明文显示特定操作的参数内容,当该Web应用系统存在CSRF漏洞时,能使攻击者很容易地使用该漏洞对Web应用系统进行攻击。

  • 验证HTTP头部Referer信息:验证HTTP头部Referer信息,是防止CSRF攻击最简单易行的一种手段。根据RFC对HTTP协议里Referer的定义,Referer信息跟随出现在每个HTTP请求头部。服务器端在收到请求之后,可以去检查这个头信息,只接受来自本域的请求而忽略外部域的请求。

  • 在请求地址中添加token并验证:可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token。如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

  • 在HTTP头中自定义属性并验证:这种方法的实质也是使用token并进行验证,不过和上一种方法不同的是,这里并不是把token以参数的形式置于HTTP请求之中,而是把它放到HTTP头中自定义的属性里。通过XMLHttpRequest这个类,可以一次性给所有该类请求加上csrftoken这个HTTP头属性,并把token值放入其中。这种方法解决了上一种方法在请求中加入token的不便,同时,通过XMLHttpRequest请求的地址不会被记录到浏览器的地址栏,也不用担心token会通过Referer泄露到其他网站中去。

  • 要求用户提交额外的验证信息:执行重要业务之前,要求用户提交额外的验证信息。例如要求用户在进行重要业务前输入口令或图形验证码,强制用户必须与应用进行交互,才能完成最终的请求。但是验证码并非万能,很多时候,出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为防御CSRF的一种辅助手段,而不能作为最主要的解决方案。